Java教程说:“不可能在同一对象上两次调用同步方法。”
这对于静态方法意味着什么?由于静态方法没有关联的对象,所以synced关键字会锁定在类而不是对象上吗?
由于静态方法没有关联的对象, 所以synced关键字会锁定在类而不是对象上吗?
是。
只是为Oscar的回答(很简洁!)添加了一些细节,Java语言规范中的相关部分是8.4.3.6,“同步方法”:
同步方法在执行之前先获取一个监视器(第17.1节)。对于类(静态)方法,使用与该方法的类的Class对象关联的监视器。对于实例方法,使用与此相关联的监视器(为其调用方法的对象)。